home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / begincpp.zip / #3_VER4.CPP < prev    next >
C/C++ Source or Header  |  1990-08-04  |  2KB  |  61 lines

  1. #include <stream.hxx>
  2.  
  3. class complex {
  4.     double re, im;
  5.   public:
  6.       complex (double r = 1., double i = 1.) : re(r), im(i) {}
  7.         void operator += ( complex );
  8.         void print() { cout << form("(%5.3f, %5.3f)\n", re, im); }
  9.     
  10.         friend complex operator + ( complex, complex );
  11.     friend complex operator * ( complex, complex );
  12.     friend int     operator ==( complex, complex );
  13. };
  14.  
  15. inline complex operator +( complex a, complex b ) {
  16.         return complex ( a.re + b.re, a.im + b.im );
  17. }
  18.  
  19. inline complex operator *( complex a, complex b ) {
  20.         return complex ( a.re * b.re - a.im * b.im,
  21.                  a.re * b.im +  a.im * b.re );
  22. }
  23.  
  24. inline int operator == ( complex a, complex b) {
  25.     return ( a.re == b.re && a.im == b.im );
  26. }
  27.  
  28. inline void complex::operator += ( complex a ) {
  29.     re += a.re;
  30.     im += a.im;
  31. }
  32.  
  33. main() {
  34.     const complex num1 (1, 0);    //num1 = (1.000, 0.000)
  35.     complex num2 = 1.;        //num2 = (1.000, 1.000)
  36.     complex num3 (3., 8.);        //num3 = (3.000, 8.000)
  37.     complex num4;            //num4 = (1.000, 1.000)
  38.     complex num5 = (4, 5);        //num5 = (5.000, 1.000) caution!
  39.     complex num6 = (5, 6, 7, 8, 9); //num6 = (9.000, 1.000) caution!
  40.     complex num7 = complex(5, 5);    //num7 = (5.000, 5.000)
  41.     complex num8 = (num3, num1);    //num8 = (1.000, 0.000)
  42.         double x = 1., y = 5., z = 3.;
  43.  
  44.     num4 += (num1 == num2? num3 : num1) + x * y + 1. / z;
  45.  
  46.     num4.print();    //prints out  (7.333, 3.000)
  47.     num5.print();    //prints out  (5.000, 1.000)
  48.     num6.print();    //prints out  (9.000, 1.000)
  49.     num7.print();    //prints out  (5.000, 5.000)
  50.     num8.print();    //prints out  (1.000, 0.000)
  51. }
  52.  
  53. /* output:
  54.  
  55. (7.333, 3.000)
  56. (5.000, 1.000)
  57. (9.000, 1.000)
  58. (5.000, 5.000)
  59. (1.000, 0.000)
  60.  
  61. */